17150
14810
Jestem tylko początkującym w kodowaniu w języku Swift. Mój pomysł jest dość prosty, jest to aplikacja z dwoma przyciskami. Po kliknięciu pole tekstowe zmieni swój tekst.
W Main.StoryBoard dodaję pole tekstowe i dwa przyciski.
W pliku ViewController.swift. Piszę tak:
import UIKit
class ViewController: UIViewController {
@IBOutlet słaby var textfield: UITextField!
@IBOutlet słaby przycisk var: UIButton!
@IBOutlet słaby var button2: UIButton!
@IBAction func action1 (_ sender: UIButton) {
textfield.text = "właśnie kliknąłeś na button1"
}
@IBAction func action2 (_ sender: UIButton) {
textfield.text = "właśnie kliknąłeś przycisk 2"
}
}
Powinno być w porządku. Jednak pojawia się błąd, który pokazuje:
wątek1: sygnał SIGABRT
w pliku AppDelegate.swift linia:
class AppDelegate: UIResponder, UIApplicationDelegate
Co jest nie tak z moim kodem? 
Aby rozwiązać problem, najpierw wyczyść projekt, a następnie przebuduj.
Aby wyczyścić projekt, przejdź do Pasek menu: Produkt -> Wyczyść
Następnie, aby odbudować projekt, wystarczy jak zwykle kliknąć przycisk Uruchom.
|
Otrzymujesz błąd SIGABRT za każdym razem, gdy masz odłączone gniazdko. Kliknij kontroler widoku w scenorysie i przejdź do połączeń w panelu bocznym (symbol strzałki). Sprawdź, czy masz tam dodatkowe gniazdko, duplikat lub dodatkowy, który nie jest podłączony. Jeśli tak nie jest, być może nie podłączyłeś poprawnie swoich gniazdek do kodu.
Pamiętaj tylko, że SIGABRT ma miejsce, gdy próbujesz zadzwonić do gniazdka (przycisk, widok, pole tekstowe itp.), Którego nie ma.
|
Dla mnie to nie był wylot. Rozwiązałem problem przechodząc do błędu i czytając, co powiedział. (Również Noob ..)
To był błąd:
A rozwiązanie było tutaj:
Po prostu przewiń dane wyjściowe w górę, a błąd zostanie ujawniony.
|
Częstym powodem tego typu błędu jest to, że mogłeś zmienić nazwę swojego IBOutlet lub IBAction. Możesz to po prostu sprawdzić, przechodząc do kodu źródłowego.
Kliknij main.storyboard, a następnie wybierz otwórz jako
a następnie wybierz kod źródłowy
kod źródłowy zostanie otwarty
a następnie sprawdź, czy istnieje nazwa iboutlet lub ibaction, które zmieniłeś, jeśli tak, wybierz część i usuń ją, a następnie ponownie utwórz iboutlet lub ibaction.
To powinno rozwiązać Twój problem
|
W moim przypadku nie otrzymałem błędu, tylko awaria w AppDelegate i musiałem odznaczyć następną opcję: OS_ACTIVITY_MODE, wtedy mogłem uzyskać prawdziwy powód awarii w moim pliku .xib
Mam nadzieję, że to też może pomóc :)
|
Miałem ten sam problem. Zrobiłem przycisk w scenorysie i połączyłem go z ViewController, a następnie usunąłem przycisk. Więc połączenie nadal tam było, ale przycisku nie było, więc mam ten sam błąd co ty.
Naprawić:
Przejdź do inspektora połączeń (strzałka w prawym górnym rogu w swojej serii ujęć) i usuń nieużywane połączenia.
|
Jeśli napotkasz to w Xcode 10, będziesz musiał wyczyścić przed kompilacją. Lub przejdź do starszego systemu kompilacji. Plik -> Ustawienia obszaru roboczego ... -> Buduj system: starszy system kompilacji.
|
W moim przypadku nie było żadnego dziennika.
Moim błędem było umieszczenie kontrolera widoku w stosie nawigacji, który był już częścią stosu nawigacji.
|
Czasami zdarza się to również, gdy funkcja musi być wykonana tylko w głównym wątku, więc możesz to naprawić, przypisując ją do głównego wątku w następujący sposób: -
DispatchQueue.main.async {
Twój kod tutaj
}
|
Dla mnie ten błąd był spowodowany tym, że miałem krok przygotowania przejścia, który nie miał zastosowania do wykonywanej ścieżki.
długa historia:
override func ready (for segue: UIStoryboardSegue, sender: Any?) {
niech gosetup = segue.destination as! Aktualizacja
gosetup.wherefrom = updatestring
}
To było robione dla wszystkich, kiedy było to tylko dla jednego. Więc tworzę boolean i umieściłem w nim gosetup.
|
Jest to bardzo częsty błąd, który może mieć wiele przyczyn. Najczęściej występuje, gdy IBOUTLET / IBACTION podłączony do kontrolera widoku w scenorysie jest usuwany z pliku Swift, ale nie z serii ujęć. Jeśli tak nie jest, użyj dziennika na dolnym pasku narzędzi, aby dowiedzieć się, jaki jest błąd i go zdiagnozować. Możesz użyć punktów przerwania i debugowania, aby pomóc Ci znaleźć błąd.
Aby dowiedzieć się, jak naprawić błąd, skorzystaj z tego artykułu, który znalazłem w Google: https://rayaans.com/fixing-the-notorious-sigabrt-error-in-xcode
|
W moim przypadku do wyszukiwania korzystałem z RxSwift.
W dużym stopniu korzystałem ze współdzielonej instancji określonej klasy wewnątrz metody onNext, co prawdopodobnie czyniło ją niedostępną (Mutex).
Upewnij się, że takie przypadki są obsługiwane ostrożnie tylko wtedy, gdy jest to absolutnie konieczne.
W moim przypadku użyłem wcześniej kilku zmiennych, aby bezpiecznie (i sekwencyjnie) przechowywać wartości zwracane metod współdzielonej instancji i ponownie użyłem ich w bloku onNext.
|
Miałem ten sam problem. W moim przypadku właśnie nadpisałem plik
GoogleService-Info.plist
na tej ścieżce:
Platforma \ ios \ YOUR_APP_NAME \ Resources \ Resources
W moim przypadku pliki były obecne bez danych.
|
Bardzo aktywne pytanie. Zdobądź 10 punktów reputacji, aby odpowiedzieć na to pytanie. Wymóg dotyczący reputacji pomaga chronić to pytanie przed spamem i brakiem odpowiedzi.
Nie szukasz odpowiedzi? Przeglądaj inne pytania otagowane ios szybko lub zadaj własne pytanie.